package com.xique.common.core.web.page;

import com.xique.common.core.constant.HttpStatus;
import com.xique.common.core.enums.ResultEnums;
import com.xique.common.core.utils.StringUtils;
import com.xique.common.core.web.domain.AjaxResult;

import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 表格分页数据对象
 * 
 * @author xique
 */
public class TableDataInfo implements Serializable
{
    private static final long serialVersionUID = 1L;

    /**  */
    private long total;

    /** 列表数据 */
    private List<?> rows;

    /** 消息状态码 */
    private int code;

    /** 消息内容 */
    private String msg;

    /**
     * 表格数据对象
     */
    public TableDataInfo()
    {
    }

    /**
     * 分页
     * 
     * @param list 列表数据
     * @param total 总记录数
     */
    public TableDataInfo(List<?> list, int total)
    {
        this.rows = list;
        this.total = total;
    }

    public TableDataInfo(int code, String msg, List<?> list, int total) {
        this.code = code;
        this.msg = msg;
        this.rows = list;
        this.total = total;
    }

    /**
     * 初始化一个新创建的 TableDataInfo 对象
     *
     * @param enums
     */
    public TableDataInfo(ResultEnums enums) {
        this.code = enums.getCode();
        this.msg = enums.getMsg();
    }

    /**
     * 初始化一个新创建的 TableDataInfo 对象
     *
     * @author shd
     * @param enums
     * @param list
     * @param total
     */
    public TableDataInfo(ResultEnums enums, List<?> list, int total) {
        this.code = enums.getCode();
        this.msg = enums.getMsg();
        this.rows = list;
        this.total = total;
    }

    /**
     * 初始化一个新创建的 TableDataInfo 对象
     *
     * @author shd
     * @date 2021/7/29 14:35
     * @param tableDataInfo
     * @return null
     */
    public TableDataInfo(TableDataInfo tableDataInfo) {
        this.code = 0 == tableDataInfo.code ? HttpStatus.SUCCESS : tableDataInfo.code;
        this.msg = tableDataInfo.msg;
        this.rows = tableDataInfo.rows;
        this.total = tableDataInfo.total;
    }

    public long getTotal()
    {
        return total;
    }

    public void setTotal(long total)
    {
        this.total = total;
    }

    public List<?> getRows()
    {
        return rows;
    }

    public void setRows(List<?> rows)
    {
        this.rows = rows;
    }

    public int getCode()
    {
        return code;
    }

    public void setCode(int code)
    {
        this.code = code;
    }

    public String getMsg()
    {
        return msg;
    }

    public void setMsg(String msg)
    {
        this.msg = msg;
    }
}